package com.lsnu.ehr.controller;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lsnu.ehr.domain.Result;
import com.lsnu.ehr.entity.Emp;
import com.lsnu.ehr.entity.PostTurn;
import com.lsnu.ehr.jpa.EmpRepository;
import com.lsnu.ehr.jpa.PostTurnRepository;
/**
 * 岗位调动控制器
 * @author 小七
 *
 */
// 允许跨域请求
@CrossOrigin
// 以json形式返回
@ResponseBody
// 控制器
@Controller

public class PostTurnController {
	
	// 依赖注入，类似于配置spring的bean
	@Autowired
	PostTurnRepository repositories;
	@Autowired
	EmpRepository empRep;
	/**
	 * 添加岗位和员工更新
	 * @param postTurn
	 * @return
	 */
	@RequestMapping("addPostTurn")
	public Object addPostTurn(PostTurn postTurn) {
		
		// 使用接口直接存储部门，spring会自动代理接口方法時
		// 查询要调动的员工信息
		Optional<Emp> opt = empRep.findById(postTurn.getPostEmp().getId());
		Boolean flag = false;
		// 判断是否存在此员工
		if( opt != null ) {
			// 添加岗位调转信息
			PostTurn dbPostTurn = repositories.save(postTurn);
			flag = (null != dbPostTurn.getId());
			// 如果添加成功，则进行员工信息更改（更改岗位）
			if(flag) {
				Emp emp = opt.get();
				emp.setEmpPost(postTurn.getTurnPost());
				empRep.save(emp);
			}
		}
		return new Result(1,flag);
	}
	
	@RequestMapping("updatePostTurn")
	public Object updateDepaTurn(PostTurn probation) {
		
		// 使用接口直接存储部门，spring会自动代理接口方法時
		// 返回值是一个持久态的Depa
		Boolean flag = false;
		if(repositories.findById(probation.getId()) != null) {
			repositories.save(probation);
			flag = true;
		}
		
		return new Result(1,flag);
	}
	
	@RequestMapping("findPostTurn")
	public Object findPostTurn() {
		
		// 使用接口直接存储部门，spring会自动代理接口方法時
		List<PostTurn> postTurns = repositories.findAll();
		
		return new Result(1, postTurns);
	}

}